這題一開始的解題思路可能有點問題,或是程式碼寫的邏輯有問題,
想了很久,決定先來看看別人的解法,來了解自己思考有問題的點
在網路上找到了一個解析的Youtube影片,講的挺詳細的(參考1)
def isPalindrome(self, x: int) -> bool:
num = 0
a = abs(x)
while(a != 0):
temp = a % 10
num = num * 10 + temp
a = int(a / 10)
if x >= 0 and x == num:
return True
else:
return False
這個方法和昨天找到解題文章裡思路1應該是一樣的(參考2)
def isPalindrome(self, x):
if x < 0:
return False
tmp = x
y = 0
while tmp:
y = y*10 + tmp%10
tmp = tmp/10
return y == x
都是把輸入的數字算出倒轉的數字之後,判斷算出來的數字和輸入的是否相同
這兩段程式裡也都把小於0的輸入數字給判False了,因為負號放到數字後面沒辦法變成有意義的數字
在(參考2)連結裡面提到,負數和尾數是0的數字都不會是回文數.
因此如果事先把這類型的數字判成False的話,後面可以少經過很多程式碼;
另外直接把反轉數算出來比我想的用列表比字元的方式來的快速簡單.
老實說,這題看完別人的程式碼後可以了解到他們程式碼好的地方,
但原本我寫的程式碼哪裡出了問題導致爆err我還是想不出來...
希望下一題可以解的順利些@@
感謝分享!不把input number轉成字串,純用整數來處理,難度比較高。轉成字串就很簡單了,可以參考影片:https://www.youtube.com/watch?v=mpi4QOg0Xzc
其中取得翻轉字串也可以用 x[::-1] (參考另一位邦友),不一定要用迴圈接。